<?php

/*
|--------------------------------------------------------------------------
| Model Factories
|--------------------------------------------------------------------------
|
| Here you may define all of your model factories. Model factories give
| you a convenient way to create models for testing and seeding your
| database. Just tell the factory how a default model should look.
|
*/

$factory->define(App\User::class, function (Faker\Generator $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->email,
        'password' => bcrypt(str_random(10)),
        'remember_token' => str_random(10),
        'is_active' => $faker->boolean(80),
        'last_logined_ip' => $faker->ipv4,
        'last_logined_at' => $faker->dateTimeThisYear,
    ];
});

$factory->defineAs(App\User::class, 'admin_groups', function ($faker) use ($factory) {
    $user = $factory->raw(App\User::class);

    return array_merge($user);
});


$factory->defineAs(App\User::class, 'company_groups', function ($faker) use ($factory) {
    $user = $factory->raw(App\User::class);

    $company = [
        'realname' => $faker->name,
        'company' => $faker->company,
    ];

    return array_merge($user, $company);
});


$factory->defineAs(App\User::class, 'hr_groups', function ($faker) use ($factory) {
    $user = $factory->raw(App\User::class);

    $hr = [
        'mobile'   => $faker->phoneNumber,
        'realname' => $faker->name,
        'company'  => $faker->company
    ];

    return array_merge($user, $hr);
});